#ifndef ARCHIVO_H
#define ARCHIVO_H

#include <string>
#include <iostream>
#include "Registro.h"

#ifdef WIN32
#include <dir.h>
#endif


using namespace std;

enum ModoApertura { maLectura, maActualizacion, maEscrituraCreacion };

class Archivo
{
        private:
                string nombreArchivo;
                bool permiteEscritura;
                FILE* mainFile;
                long lastRecordOffsetArchivo;
                long offSetArchivo;

        public:
                Archivo();
                virtual ~Archivo();

                void setNombreArchivo(string value);

                string getNombreArchivo();
                bool getAbierto();
                bool getPermiteEscritura();
                bool getEsFinDeArchivo();

                long getLastRecordOffsetArchivo();
                long getOffsetArchivo();

                bool abrirArchivo(enum ModoApertura modoApertura);
                void cerrarArchivo();
                bool crearArchivo();

                bool posicionarEnArchivo(unsigned int offset);
                bool posicionarAlFinal();

                bool escribirRegistro(Registro* registro);
                bool leerRegistro(Registro* registro);

                static bool ExisteDirectorio(const char* nombreDirectorio);
                static bool CrearDirectorio(const char* nombreDirectorio);
                static bool RenombrarArchivo(const char* nombreAnterior, const char* nombreNuevo);
                static bool EliminarArchivo(const char* nombreArchivo);
};


#endif


